package com.usian.controller;

import com.usian.pojo.Etc;
import com.usian.pojo.User;
import com.usian.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.servlet.server.Session;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.List;

@Controller
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("/login")//登陆的后台 在前台传过来的用户名和密码在这进行判断进行登陆操作
    public String Login(Model model, User user, HttpServletRequest request, HttpServletResponse response, HttpSession session){
        User users = userService.login(user);//把传过来的用户和密码与数据库的账号和密码进行验证
        if (users!=null){//利用账号查出所有的数据如果为空说明数据库没有输入的账号
           if (user.getPassword().equals(users.getPassword())){//判断由此账号进行密码判断把输入的密码和数据库的密码进行比较
               if (users.getRoleid()==1){//密码认证成功后进行管理员和普通用户进行判断 如果为管理员进入管理员页面 普通用户进入普通用户页面
                   String username = request.getParameter("username");//获取到输入的用户名便于后续的操作
                   session.setAttribute("username",username);//把获取的用户名存入session域
                   return "redirect:/user/findUserEtc1";//返回管理员查询后台
               }else if(users.getRoleid()==2){//为普通用户
                   String username = request.getParameter("username");
                   session.setAttribute("username",username);
                   return "redirect:/user/findUserEtc2";//返回普通用户的查询后台
               }
           }
           else {
               return "login";//密码错误继续返回登陆页面
           }
        }
        return "login";//没有注册返回登陆页面
    }

    //注册用户的一个页面过度器
    @RequestMapping("/toadduser")
    public String toadd(){
        return "adduser";//
    }

    //注册用户的后台操作
    @RequestMapping("/adduser")
    public String addUser(User user){//获取到前台传输过来的的数据
       userService.add(user);//调用接口进行添加操作
       return "login";//注册成功返回登陆页面
    }

    //查询管理员的后台操作
    @RequestMapping("/findUserEtc1")
    public String findEtc1(Model model,Etc etc){//因为管理员可以看到所有的用户信息，也需要进行模糊查询的操作
        List<Etc> etc2 = userService.findEtc1(etc);//查询出所有的用户信息
        String carid = etc.getCarid();//获取出车牌号
        String etcid = etc.getEtcid();//获取ETC卡号
        model.addAttribute("carid",carid);//存入model域中回显模糊查询的CarID卡号
        model.addAttribute("etcid",etcid);//存入model域中回显模糊查询的ETC卡号
        model.addAttribute("list",etc2);//返回给前台所有的查询数据
        return "findEtc1";//跳转到页面
    }

    //查询普通用户的后台操作
    @RequestMapping("/findUserEtc2")
    public String findEtc2(Model model,Etc etc, HttpServletRequest request, HttpServletResponse response,HttpSession session){//因为他是普通用户它只能看到自己名下的所有数据不能看到其他用户的数据
        String username = (String) session.getAttribute("username");//获取出session域中的username
        etc.setName(username);//etc实体类中的name赋值进行条件查询
        List<Etc> etc2 = userService.findEtc2(etc);//应为是登陆那个用户，用户只能查询出自己的所有在跳转页面的时候就要进行条件查询
        String carid = etc.getCarid();//获取出车牌号
        String etcid = etc.getEtcid();//获取ETC卡号
        model.addAttribute("carid",carid);//存入model域中回显模糊查询的CarID卡号
        model.addAttribute("etcid",etcid);//存入model域中回显模糊查询的ETC卡号
        model.addAttribute("list",etc2);//返回给前台所有的查询数据
        return "findEtc2";
    }



    //添加的用户ETC的页面的过度器
    @RequestMapping("/toaddetc")
    public String toaddetc(){
        return "addetc";//返回到ETC添加页面
    }

    //添加用户的ETC炒作
    @RequestMapping("/addEtc")
    public String addEtc(Etc etc, HttpSession session){//应为是普通用户，普通用户在添加的时候只能添加在自己的用户下
        String username = (String) session.getAttribute("username");//从session域中获取到登陆的用户名
        etc.setName(username);//把获取的用户赋值给ETC表的用户
        userService.addEtc(etc);//添加ETC操作
        return "redirect:/user/findUserEtc2";//返回用户的展示页面
    }

    //删除用户ETC操作
    @RequestMapping("/delStu")
    public String delStu(/*HttpServletRequest request, HttpServletResponse response , */Integer id){
        userService.delStu(id);//删除的操作
      /*  try {
            response.sendRedirect(request.getContextPath()+"findAll");
        } catch (IOException e) {
            e.printStackTrace();
        }*/
        return "redirect:/user/findUserEtc2";//返回普通用户的展示页面
    }

    //修改的数据回显以及页面条的的中间件
    @RequestMapping("/toupdate")
    public String toupdate(Integer id,Model model){//点击修改按钮传过来的ETC的主键ID
        Etc etc = userService.findById(id);//利用ETC的主键ID查询出数据与 ID 相同的所有数据
        model.addAttribute("etc",etc);//存入域中发送给前台进行修改数据的回显
        return "update";//返回到修改 页面
      /*  ModelAndView view = new ModelAndView();
        view.addObject("student",student);
        return view;*/
    }

    //完整修改的后台操作
    @RequestMapping("update")
    public String update(Etc etc){//获取到修改后的数据
        userService.update(etc);//后续的修改操作
        return "redirect:/user/findUserEtc2";//返回到查询页面
    }

    //退出登陆的中间件
    @RequestMapping("/logins")
    public String login(){
        return "login";//返回到登陆页面
    }
}
